home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / tex / mf / inputs / cm / it_lower.mf < prev    next >
Text File  |  1993-11-28  |  29KB  |  890 lines

  1. %
  2. %
  3. % ALFA
  4.  
  5.  
  6. def width =   8.5u enddef; 
  7. def height = x_height enddef;
  8. def dims = width#,height#,0 enddef;
  9. def ital = 0 enddef;
  10. def fit_params = 0,.5u# enddef;
  11.  
  12. def gen_letter =
  13. adjust_fit(0,0); pickup fine.nib; w:=w+.5u;
  14. pos0(hair,0); pos1(vair,90); pos2(curve,180); pos3(vair,270);
  15. pos4(stem,0); x4=x0; y4+.5stem=vround .98h;
  16. x1=x3=.5[x0,x2]; lft x2r=hround(1.5u-.5curve);
  17. rt x4r=hround(w-2.5u+.5stem);
  18. top y1r=h+oo; bot y3r=-oo; y0=y2=.5[y1,y3];
  19. filldraw stroke super_arc.e(0,1) & pulled_arc.e(1,2)
  20.  & pulled_arc.e(2,3) & super_arc.e(3,0);  % bowl
  21. x5=x4; x7=w; hook_out(5,6,7);  % closing hook
  22. filldraw circ_stroke z4e--z5e;  % stem
  23. math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
  24.     numeric x_baryctr; x_baryctr=.25[x1,x4];          %accent reference
  25.   numeric pos_stem; pos_stem=x_baryctr;               %iota reference
  26.   traba(-.5u);                
  27. enddef;
  28.  
  29. cmchar "Lowercase alpha";
  30. beginchar("a",dims);
  31. this_letter; penlabels(0,1,2,3,4,5,6,7); endchar;
  32.  
  33. cmchar "Lowercase alpha with rough breathing";
  34. beginchar(oct"001",width#+u#,acc_ht#,0);
  35. this_letter; spirit(x_baryctr)<; endchar;
  36.  
  37. cmchar "Lowercase alpha with smooth breathing";
  38. beginchar(oct"002",width#+u#,acc_ht#,0);
  39. this_letter; spirit(x_baryctr)>; endchar;
  40.  
  41. cmchar "Lowercase alpha with acute";
  42. beginchar(oct"003",width#+u#,acc_ht#,0);
  43. this_letter; acute(x_baryctr); endchar;
  44.  
  45. cmchar "Lowercase alpha with rough breathing and acute";
  46. beginchar(oct"004",width#+u#,acc_ht#,0);
  47. this_letter; spirit_acute(x_baryctr)<; endchar;
  48.  
  49. cmchar "Lowercase alpha with smooth breathing and acute";
  50. beginchar(oct"005",width#+u#,acc_ht#,0);
  51. this_letter; spirit_acute(x_baryctr)>; endchar;
  52.  
  53. cmchar "Lowercase alpha with circumflex";
  54. beginchar(oct"006",width#+u#,circ_ht#,0);
  55. this_letter; corr_circumflex(x_baryctr,u); endchar;
  56.  
  57. picture pic.iota;
  58. picture savedpicture;
  59.  
  60. % BHTA
  61.  
  62. def dims = 8u#,asc_height#,desc_depth# enddef;
  63. def ital = 0 enddef;
  64. def fit_params = 0,0 enddef;
  65.  
  66. def gen_letter=
  67. adjust_fit(0,0); pickup fine.nib; w:=w+1.5u;
  68. pos0(.5[hair,stem],180); pos1(.5[hair,stem],180); pos2(vair,90);
  69. pos3(stem,0); pos4(vair,-90); pos5(hair,-180);
  70. pos6(vair,-270); pos7(curve,-360); pos8(vair,-450); pos9(hair,-540);
  71. x0=x1=x9; lft x0l=hround(1.5u-.5hair); x2=x4=x6=x8=.5w+.25u;
  72. rt x3r=hround(w-1.5u); rt x7r=hround(w-1.5u+.5curve); rt x5l=hround(x4-u);
  73. bot y0=-d; y1=top y6r=x_height; top y2r=h+oo; y3=.5[y2,y4];
  74. y5=.5[y4,y6]; top y6r-bot y4r=vstem+eps; bot y8=-oo; y7=y9=.5[y6,y8];
  75. if y6l<y4l: y6l:=y4l:=y5; fi
  76. filldraw stroke z0e---z1e...pulled_arc.e(2,3)
  77.  & pulled_arc.e(3,4)...{up}z5e;  % stem and upper bowl
  78. filldraw stroke z5e{up}...pulled_arc.e(6,7)
  79.  & pulled_arc.e(7,8)...{up}z9e;  % lower bowl
  80. math_fit(desc_depth#*slant+.5hair#-u#,.7x_height#*slant+.5curve#-1.5u#);
  81. traba(-.5u);
  82. enddef;
  83.  
  84. cmchar "Lowercase beta";
  85. beginchar("b",dims);
  86. this_letter; penlabels(0,1,2,3,4,5,6,7,8,9); endchar;
  87.  
  88. picture savedpicture;
  89.  
  90. % GAMMA
  91.  
  92. def dims = 8.5u#,x_height#,desc_depth# enddef;
  93. def ital = 0 enddef;
  94. def fit_params = 0,0 enddef;
  95.  
  96. def gen_letter=
  97.   adjust_fit(0,0); pickup fine.nib; w:=w+1.5u;
  98. pos1(hair,180); pos2(vstem+dw,90);
  99. pos4(hair,0); pos5(vair,-90); pos6(hair,-180); pos7(hair,-180);
  100. bot y1=.5772156649h; top y2r=h+oo; y4=y6=-.5d;
  101. bot y5r=-d-o; top y7=h;
  102. lft x1r=hround(.5u-.5hair); x2=2.5u; rt x4r=hround(w-3u); x5=.5[x4,x6];
  103. rt x4l-lft x6l=curve; rt x7l=hround(w-u);
  104. if x4l<x6l: x4l:=x6l:=x5; fi
  105. pos3(hair,angle(z4-z2)+90); x3=superness[x2,x4]; y3=superness[y4,y2];
  106. filldraw stroke z1e{up}...z2e{right}...z3e{z4-z2}
  107.  ...z4e{down}...{left}z5e; % arc
  108. filldraw stroke z5e{left}...z6e{up}..{2(x7-x6),y7-y6}z7e;  % stem
  109. math_fit(-.5772156649x_height#*slant,ic#-u#);
  110. traba(-.5u);
  111. enddef;
  112.  
  113. cmchar "Lowercase gamma";
  114. beginchar("g",dims);
  115. this_letter; penlabels(1,2,3,4,5,6,7);  endchar;
  116.  
  117. picture savedpicture;
  118.  
  119. % DELTA
  120.  
  121.  
  122. def dims = 7.25u#,asc_height#,0 enddef;
  123. def ital = 0 enddef;
  124. def fit_params = 0,0 enddef;
  125.  
  126. def gen_letter =
  127.   adjust_fit(0,0); pickup fine.nib; w:=w+.75u;
  128. pos1(hair,-180); pos2(vair,-90);
  129. numeric theta; theta=angle(18u,-h); pos9(hair,theta);
  130. pos3(stem,theta+90); pos4(stem,theta+90); pos5(1/4[hair,stem],20);
  131. pos6(vair,-90); pos7(curve,-180); pos8(vair,-270);
  132. rt x1l=hround(w-2u+.5hair); x2=.5w; x3r=3u; rt x5r=hround(w-u);
  133. x9l=hround(x1+u); y9=y1;
  134. x4=x6=x8=.5w+.5u; lft x7r=hround(1.5u-.5curve);
  135. top y2l=h+oo; y1=min(.9h,y2r-eps); top y8r=x_height+oo; y4=y8;
  136. z4-z3=whatever*(18u,-h); y5=y7=.5[y6,y8]; bot y6=-oo;
  137. filldraw stroke z1e{x2-x1,3(y2-y1)}...z2e{left}...z3e---z4e
  138.  ....z5e{down}...pulled_arc.e(6,7) & pulled_arc.e(7,8);  % hook and bowl
  139. filldraw stroke z1{x1-x2,3(y1-y2)}...{x1-x2,3(y2-y1)}z9;
  140. math_fit(-.3x_height#*slant+.5curve#-u#,.7x_height#*slant-.5u#);
  141. traba(-.5u);
  142. enddef;
  143.  
  144. cmchar "Lowercase delta";
  145. beginchar("d",dims);
  146. this_letter; penlabels(1,2,3,4,5,6,7,8); endchar;
  147.  
  148. picture savedpicture;
  149.  
  150. % EYILON
  151.  
  152.  
  153. def width = 6.5u enddef;
  154. def height = x_height enddef;
  155. def dims = width#,height#,0 enddef;
  156. def ital = 0 enddef;
  157. def fit_params = 0,0 enddef;
  158.  
  159. def gen_letter =
  160. adjust_fit(0,0); pickup fine.nib; w:=w+1.5u;
  161. numeric light_vstem; light_vstem=Vround 2/3[vair,vstem];
  162. pos2(light_vstem,90); x2=x8=.5w+.5u; top y2r=h+o;
  163. x1+.5light_vstem=hround(w-u); y1=.2[y2,bar_height];
  164. pos1(light_vstem,angle(x1-x2,2(y1-y2))+90); pos3(hair,180); pos4(vair,270);
  165. pos5(hair,360); pos6(vair,450); pos7(hair,540); pos8(light_vstem,630);
  166. lft x3r=hround u; x4=x6=.5w; rt x5r=hround(w-2.5u); x7=x3;
  167. y3=.5[y2,y4]; y5=bar_height=.5[y4,y6]; y7=.5[y6,y8]; bot y8r=-o;
  168. top y6r-bot y4r=vstem+eps; if y6l<y4l: y6l:=y4l:=y5; fi
  169. x9+.5vair=hround(w-.5u); y9=1/3[y8,bar_height];
  170. pos9(vair,angle(x8-x9,2(y8-y9))+90);
  171. filldraw circ_stroke z1e{x2-x1,2(y2-y1)}...pulled_super_arc.e(2,3)(.5superpull)
  172.  & super_arc.e(3,4)...{up}z5e;  % upper arc
  173. filldraw circ_stroke z9e{x8-x9,8(y8-y9)}...pulled_arc.e(8,7)
  174.  & super_arc.e(7,6)...{down}z5e;  % lower arc
  175. math_fit(-.5bar_height#*slant-.5u#,ic#);
  176.    numeric x_baryctr; x_baryctr=x2;                    %   accent reference
  177. traba(-.5u);
  178. enddef;
  179.  
  180. cmchar "Lowercase epsilon";
  181. beginchar("e",dims);
  182. this_letter; penlabels(1,2,3,4,5,6,7,8,9); endchar;
  183.  
  184. cmchar "Lowercase epsilon with rough breathing";
  185. beginchar(oct"037",width#+1.2u#,acc_ht#,0);
  186. this_letter; spirit(x_baryctr)<; endchar;
  187.  
  188. cmchar "Lowercase epsilon with smooth breathing";
  189. beginchar(oct"040",width#+1.2u#,acc_ht#,0);
  190. this_letter; spirit(x_baryctr)>; endchar;
  191.  
  192. cmchar "Lowercase epsilon with acute";
  193. beginchar(oct"044",width#+1.2u#,acc_ht#,0);
  194. this_letter; acute(x_baryctr); endchar;
  195.  
  196. cmchar "Lowercase epsilon with rough breathing and acute";
  197. beginchar(oct"177",width#+1.2u#,acc_ht#,0);
  198. this_letter; spirit_acute(x_baryctr)<; endchar;
  199.  
  200. cmchar "Lowercase epsilon with smooth breathing and acute";
  201. beginchar(oct"046",width#+1.2u#,acc_ht#,0);
  202. this_letter; spirit_acute(x_baryctr)>; endchar;
  203.  
  204. picture savedpicture;
  205.  
  206. % ZHTA
  207.  
  208. def dims = 7u#,asc_height#,desc_depth# enddef;
  209. def ital = 0 enddef;
  210. def fit_params = 0,0 enddef;
  211.  
  212. def gen_letter=
  213. adjust_fit(0,0); pickup fine.nib; w:=w+u;
  214. pos0(hair,-360); pos1(vair,-270); pos2(hair,-180); pos3(vair,-90);
  215. numeric theta; theta=90-angle(25u,x_height); slope:=-x_height/25u;
  216. pos6(stem,theta); pos7(vair,-90); pos8(vair,-135);
  217. lft x0l=hround 3.5u; x1=x3=.5[x0,x2]; rt x2l=hround max(rt x0r,w-2u)+eps;
  218. top y0=h; top y3l=bot y1l+vstem+eps=vround(y0-.25(h-x_height)); y2=.5[y1,y3];
  219. if y1r>y3r: y1r:=y3r:=y2; fi
  220. lft x4l=hround u; x4r-x4l=(hround .6[vair,stem])-fine;
  221. x6+.5u=x7=w-2u; x8=.5w+.75u;
  222. y6=-.1d; y8=-3/4d-oo; bot y7r=-d-oo;
  223. ellipse_set(3l,4l,5l,6l); ellipse_set(3r,4r,5r,6r);
  224. y4l:=.9[y6,y4l]; y4=y4r:=.9[y6,y4r];
  225. filldraw circ_stroke z0e{down}...z1e{right}...{up}z2e;  % opening hook
  226. filldraw circ_stroke z8e{x7-x8,2(y7-y8)}...z7e{right}
  227.  ...z6e---z5e....{up}z4e
  228.  ..tension 1 and atleast1.5..{right}z3e...{down}z2e;  % main stroke
  229. math_fit(-.2asc_height#*slant-.5u#,0); 
  230. traba(-.5u);
  231. enddef;
  232.  
  233. cmchar "Lowercase zeta";
  234. beginchar("z",dims);
  235. this_letter; penlabels(0,1,2,3,4,5,6,7,8); endchar;
  236.  
  237. picture savedpicture; 
  238.  
  239. % HTA
  240.  
  241.  
  242. def width = 8.5u enddef;
  243. def dims = width#,x_height#,desc_depth# enddef;
  244. def ital = 0 enddef;
  245. def fit_params = if straight: .75 else: .5 fi u#,0 enddef;
  246.  
  247. def gen_letter =
  248. adjust_fit(0,0); pickup fine.nib; w:=w+.5u;
  249. x0=0; x1=x2; pos2(stem,0); lft x2l=hround(2.5u-.5stem); y2-.5stem=-oo;
  250. hook_in(0,a,1);  % opening hook
  251. filldraw circ_stroke z2e--z1e;  % left stem
  252. x4+.5stem=hround(w-1.5u+.5stem); ital_arch(2,3,4);  % arch
  253. pos5(stem,0); x5=x4; y5-.5stem=-d-o;
  254. filldraw circ_stroke z5e--z4e;  % right stem
  255. math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#-1/3x_height#*slant);
  256.  numeric x_baryctr; x_baryctr=.1[x3,x0];           % accent reference
  257.  numeric pos_stem; pos_stem=x5;                         % iota reference
  258. enddef;
  259.  
  260. cmchar "Lowercase eta";
  261. beginchar("h",dims);
  262. this_letter; penlabels(0,a,1,2,3,4,5); endchar;
  263.  
  264. cmchar "Lowercase eta with rough breathing";
  265. beginchar(oct"007",width#+1.3u#,acc_ht#,desc_depth#);
  266. this_letter; spirit(x_baryctr)<; endchar;
  267.  
  268. cmchar "Lowercase eta with smooth breathing";
  269. beginchar(oct"010",width#+1.3u#,acc_ht#,desc_depth#);
  270. this_letter; spirit(x_baryctr)>; endchar;
  271.  
  272. cmchar "Lowercase eta with acute";
  273. beginchar(oct"011",width#+1.3u#,acc_ht#,desc_depth#);
  274. this_letter; acute(x_baryctr); endchar;
  275.  
  276. cmchar "Lowercase eta with rough breathing and acute";
  277. beginchar(oct"012",width#+1.3u#,acc_ht#,desc_depth#);
  278. this_letter; spirit_acute(x_baryctr)<; endchar;
  279.  
  280. cmchar "Lowercase eta with smooth breathing and acute";
  281. beginchar(oct"013",width#+1.3u#,acc_ht#,desc_depth#);
  282. this_letter; spirit_acute(x_baryctr)>; endchar;
  283.  
  284. cmchar "Lowercase eta with circumflex";
  285. beginchar(oct"014",width#+1.3u#,circ_ht#,desc_depth#);
  286. this_letter; corr_circumflex(x_baryctr,1.5u); endchar;
  287.  
  288. picture pic.iota;
  289. picture savedpicture;
  290.  
  291. % JHTA
  292.  
  293. def dims = 7u#,asc_height#,0 enddef;
  294. def ital = 0 enddef;
  295. def fit_params = 0,0 enddef;
  296.  
  297. def gen_letter=
  298. adjust_fit(0,0); pickup fine.nib; w:=w+1.25u;
  299. pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360);
  300. x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2;
  301. top y1r=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
  302. filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
  303.  & pulled_arc.e(3,4) & pulled_arc.e(4,1);  % bowl
  304. pos2'(bar,90); pos4'(bar,90); z2'=z2l; z4'=z4l;
  305. filldraw stroke z2'e--z4'e;  % bar
  306. math_fit(-.3asc_height#*slant-u#+.5curve#,ic#-.5u#);
  307. traba(-.5u);
  308. enddef;
  309.  
  310. cmchar "Lowercase theta";
  311. beginchar("j",dims);
  312. this_letter; penlabels(1,2,3,4); endchar;
  313.  
  314. picture savedpicture;
  315.  
  316. % IWTA
  317.  
  318.  
  319. def width = 5u enddef;
  320. def dims = width#,x_height#,0 enddef;
  321. def ital = 0 enddef;
  322. def fit_params = if monospace: u#,u# else:0,2curve#-3u# fi enddef;
  323.  
  324. def gen_letter=
  325. adjust_fit(if monospace: u#,u# else: 0,0 fi); pickup fine.nib;
  326. pos1(stem,0); lft x1l=hround(1.5u-.5stem); y1+.5stem=h+oo;
  327. x2=x1-.25u; x4=w; hook_out(2,3,4)(skewed);  % closing hook
  328. filldraw circ_stroke z1e{down}...{-u,-x_height}z2e;  % stem
  329. math_fit(0,ic#);  numeric x_baryctr; x_baryctr=x1; 
  330. enddef;
  331.  
  332. cmchar "Lowercase iota";
  333. beginchar("i",dims);
  334. this_letter; penlabels(1,2,3,4); endchar;
  335.  
  336. cmchar "Lowercase iota with rough breathing";
  337. beginchar(oct"023",width#,acc_ht#,0);
  338. this_letter; spirit(x_baryctr if serifs: +.25u fi)<; endchar;
  339.  
  340. cmchar "Lowercase iota with smooth breathing";
  341. beginchar(oct"024",width#,acc_ht#,0);
  342. this_letter; spirit(x_baryctr if serifs: -.25u fi)>; endchar;
  343.  
  344. cmchar "Lowercase iota with acute";
  345. beginchar(oct"025",width#,acc_ht#,0);
  346. this_letter; acute(x_baryctr); endchar;
  347.  
  348. cmchar "Lowercase iota with rough breathing and acute";
  349. beginchar(oct"026",width#,acc_ht#,0);
  350. this_letter; spirit_acute(x_baryctr)<; endchar;
  351.  
  352. cmchar "Lowercase iota with smooth breathing and acute";
  353. beginchar(oct"027",width#,acc_ht#,0);
  354. this_letter; spirit_acute(x_baryctr)>; endchar;
  355.  
  356. cmchar "Lowercase iota with circumflex";
  357. beginchar(oct"030",width#,circ_ht#,0);
  358. this_letter; circumflex(x_baryctr); endchar;
  359.  
  360. picture savedpicture;
  361.  
  362. % KAPPA
  363.  
  364. def dims = 8.5u#,x_height#,0 enddef;
  365. def ital = 0 enddef;
  366. def fit_params = 0,0 enddef;
  367.  
  368. def gen_letter=
  369. adjust_fit(0,0); pickup fine.nib; w:=w+.5u;
  370. pos1(stem,0); pos2(stem,0); pos3(vair,90); pos4(vair,90); pos5(flare,90);
  371. x1=x2=x3; lft x1l=hround(1.5u-.5stem); y1+.5stem=h+oo; y2-.5stem=-oo;
  372. filldraw z1l---z2l..z2r---z1r..cycle;  % stem
  373. y3=bar_height; top y4r=h; x4+.5flare=hround(w-1.5u); z5r=z4r;
  374. path p,q; p=z3l{right}..{right}z4l; q=z5r{right}..z5l{left}...cycle;
  375. numeric t; t=ypart(p intersectiontimes q);
  376. filldraw stroke z3e{right}..{right}z4e;  % upper diagonal
  377. filldraw subpath(0,t) of q--cycle;  % bulb
  378. pos7(stem,0); pos8(vair,90); pos9(hair,180);
  379. x9+.5hair=hround(w+.5hair-epsilon); y9=1/3x_height;
  380. lft x7l=hround(w-2.75u-.5stem); y7=1/2y3; x8=w-1.2u; bot y8l=-oo;
  381. filldraw stroke z3e{right}...z7e{down}
  382.  ...z8e{right}...{up}z9e;  % lower diagonal
  383. math_fit(0,ic#); 
  384. traba(-.5u);
  385. enddef;
  386.  
  387. cmchar "Lowercase kappa";
  388. beginchar("k",dims);
  389. this_letter; penlabels(1,2,3,4,5,6,7,8,9); endchar;
  390.  
  391. picture savedpicture;
  392.  
  393. % LAMBDA
  394.  
  395. def dims =  8u#,asc_height#,0 enddef;
  396. def ital = 0 enddef;
  397. def fit_params = -.25u#,-.25u# enddef;
  398. def krn = -.75u# enddef;
  399.  
  400. def gen_letter=
  401. adjust_fit(0,0); pickup fine.nib; w:=w+2.5u;
  402. pos1(vair,90); lft x1=hround .1u; top y1r=h;
  403. x2=x1+2u; y2=.7[x_height,h]; x3=w-2u; bot y4=-oo; y3=max(.07h,y4+eps);
  404. z4-(.25u,0)=whatever[z2,z3]; numeric theta; theta=angle(z2-z3)-90;
  405. pos2(stem,theta); pos3(stem,theta); pos4(stem,0);
  406. filldraw circ_stroke z1e{right}...z2e---z3e
  407.  ...{2(x4e-x3e),y4e-y3e}z4e;  % long diagonal
  408. y5=.5[bar_height,x_height]; z5=whatever[z2,z3];
  409. x6=1.5u; y6-.5stem=-oo; pos5(hair,theta-90); pos6(stem,angle(z5-z6)-90);
  410. filldraw circ_stroke z6e--z5e;
  411. traba(-u);% short diagonal
  412. enddef;
  413.  
  414. cmchar "Lowercase lambda";
  415. beginchar("l",dims);
  416. this_letter; penlabels(1,2,3,4,5,6); endchar;
  417.  
  418. picture savedpicture;
  419.  
  420. % MI
  421.  
  422. def dims = 8.25u#,x_height#,desc_depth# enddef;
  423. def ital = 0 enddef;
  424. def fit_params = 0,.5stem# enddef;
  425.  
  426. def gen_letter=
  427. adjust_fit(0,0); pickup fine.nib; 
  428. w:=w+.75u; interim superness:=more_super;
  429. pos1(stem,-180); pos2(stem,-180); x1=x2=x3; lft x1r=hround(1.5u-.5stem);
  430. y1+.5stem=h+oo; y2-.5stem=-d-o;
  431. filldraw z1r---z2r..z2l---z1l..cycle;  % left stem
  432. pos3(stem,-180); pos4(vair,-90); pos5(hair,0); x4=.5[x3,x5];
  433. pos6(stem,0); rt x6r=hround(w-2.5u+.5stem);
  434. x5=x6=x7; x9=w; hook_out(7,8,9);  % closing hook
  435. y3=.7[y4,y5]; bot y4r=-oo; y5=.57h; y6+.5stem=h;
  436. filldraw stroke super_arc.e(3,4)...{up}z5e; % left stem and arc
  437. filldraw circ_stroke z6e--z7e;  % right stem
  438. math_fit(desc_depth#*slant+.5stem#-u#,ic#);
  439. traba(-.75u);
  440. enddef;
  441.  
  442. cmchar "Lowercase mu";
  443. beginchar("m",dims);
  444. this_letter; penlabels(1,2,3,4,5,6,7,8,9); endchar;
  445.  
  446. picture savedpicture;
  447.  
  448. % NI
  449.  
  450. def dims = 8.5u#,x_height#,0 enddef;
  451. def ital = 0 enddef;
  452. def fit_params = 0,0 enddef;
  453.  
  454. def gen_letter =
  455. adjust_fit(0,0); pickup fine.nib;
  456. pos3(vair,-90); pos4(stem,0); bot y3r=0; y4+.5stem=h+oo;
  457. x3-.5stem=hround(1.5u-.5stem); x4+.5stem=hround(w-1.5u+.5stem);
  458. filldraw circ_stroke z4e{down}...{-36u,-h}z3e;  % diagonal
  459. pickup tiny.nib; pos1(stem,0); pos2(stem,0);
  460. top y1=h+min(oo,serif_drop); bot y2=0; x1=x2=x3;
  461. z=((z4{down}...{-36u,-h}z3)intersectionpoint((x2r,0)--(x2r,h)));
  462. filldraw z1l--z2l--z--z1r--cycle;  % stem
  463. sloped_serif.l(1,2,a,1/3,jut,serif_drop); traba(.5u);% upper left serif
  464. math_fit(0,ic#-1/3x_height#*slant-.5u#); enddef;
  465.  
  466. cmchar "Lowercase nu";
  467. beginchar("n",dims);
  468. this_letter; penlabels(1,2,3,4); endchar;
  469.  
  470. picture savedpicture;
  471.  
  472. % XI
  473.  
  474. def dims = 7u#,asc_height#,desc_depth# enddef;
  475. def ital = 0 enddef;
  476. def fit_params = 0,0 enddef;
  477.  
  478. def gen_letter=
  479. adjust_fit(0,0); pickup fine.nib; w:=w+u;
  480. pos10(hair,-720); pos11(vair,-630); pos12(hair,-540); pos13(vair,-450);
  481. lft x10l=hround 1/3w; x11=x13=.5[x10,x12]; rt x12l=hround(w-2.5u);
  482. top y10=h; top y13l=bot y11l+vstem+eps=vround(y10-.25(h-x_height));
  483. y12=.5[y11,y13]; if y11r>y13r: y11r:=y13r:=y12; fi
  484. pos0(curve,-360); pos1(vair,-270); pos2(hair,-180); pos3(vair,-90);
  485. numeric theta; theta=90-angle(22u,x_height); slope:=-x_height/22u;
  486. pos6(stem,theta); pos7(vair,-90); pos8(vair,-135);
  487. lft x0l=hround u; x1=x3=x11; x2=x12;
  488. y0=.5[y13,y1]; top y3l=vround .5h=bot y1l+vstem+eps; y2=.5[y1,y3];
  489. if y1r>y3r: y1r:=y3r:=y2; fi
  490. lft x4l=hround u; x4r-x4l=hround .5[vair,stem]-fine;
  491. x6=x7=w-2u; x8=.5w+.5u; y6=-.3d; bot y7r=-d-oo; y8=max(-3/4d-oo,y7l);
  492. ellipse_set(3l,4l,5l,6l); ellipse_set(3r,4r,5r,6r);
  493. y4l:=.9[y6,y4l]; y4=y4r:=.9[y6,y4r];
  494. filldraw circ_stroke z10e{down}...z11e{right}...{up}z12e;  % opening hook
  495. filldraw stroke z12e{up}...z13e{left}...z0e{down}
  496.  ...z1e{right}...{up}z2e;  % upper arc
  497. filldraw circ_stroke z8e{x7-x8,2(y7-y8)}...z7e{right}...z6e
  498.  ---z5e...{up}z4e...{right}z3e...{down}z2e;  % main stroke
  499. math_fit(-.2asc_height#*slant-.5u#,0);
  500. traba(-.5u);
  501. enddef;
  502.  
  503. cmchar "Lowercase xi";
  504. beginchar("x",dims);
  505. this_letter; penlabels(0,1,2,3,4,5,6,7,8,9,10,11,12,13); endchar;
  506.  
  507. picture savedpicture;
  508.  
  509. % OMIKRON
  510.  
  511. def width = 8u enddef;
  512. def dims = width#,x_height#,0 enddef;
  513. def ital = 0 enddef;
  514. def fit_params = 0,0 enddef;
  515.  
  516. def gen_letter =
  517. adjust_fit(0,0); pickup fine.nib; w:=w+u;
  518. pos1(vair,90); pos2(curve,180); pos3(vair,270); pos4(curve,360);
  519. x1=x3=.5w; lft x2r=hround(1.5u-.5curve); x4=w-x2;
  520. top y1r=h+oo; y2=y4=.5[y1,y3]; bot y3r=-oo;
  521. filldraw stroke pulled_arc.e(1,2) & pulled_arc.e(2,3)
  522.  & pulled_arc.e(3,4) & pulled_arc.e(4,1); % bowl
  523. math_fit(-.3x_height#*slant+.5curve#-u#,ic#);
  524.   numeric x_baryctr; x_baryctr=.1[x1,x2]; 
  525. traba(-.5u); % accent reference
  526. enddef;
  527.  
  528.  
  529. cmchar "Lowercase omicron";
  530. beginchar("o",dims);
  531. this_letter; penlabels(1,2,3,4); endchar;
  532.  
  533. cmchar "Lowercase omicron with rough breathing";
  534. beginchar(oct"137",width#+.6u#,acc_ht#,0);
  535. this_letter; spirit(x_baryctr)<; endchar;
  536.  
  537. cmchar "Lowercase omicron with smooth breathing";
  538. beginchar(oct"140",width#+.6u#,acc_ht#,0);
  539. this_letter; spirit(x_baryctr)>; endchar;
  540.  
  541. cmchar "Lowercase omicron with acute";
  542. beginchar(oct"103",width#+.6u#,acc_ht#,0);
  543. this_letter; acute(x_baryctr); endchar;
  544.  
  545. cmchar "Lowercase omicron with rough breathing and acute";
  546. beginchar(oct"133",width#+.6u#,acc_ht#,0);
  547. this_letter; spirit_acute(x_baryctr)<; endchar;
  548.  
  549. cmchar "Lowercase omicron with smooth breathing and acute";
  550. beginchar(oct"135",width#+.6u#,acc_ht#,0);
  551. this_letter; spirit_acute(x_baryctr)>; endchar;
  552.  
  553. picture savedpicture;
  554.  
  555. % PI
  556.  
  557. def dims = 9u#,x_height#,0 enddef;
  558. def ital = 0 enddef;
  559. def fit_params = -.25,0 enddef;
  560.  
  561. def gen_letter =
  562. adjust_fit(0,0); w:=w+u; pi_stroke; % hook and bar
  563. pos4(hair,0); pos6(hair,0); x4=3.5u; x6=w-4u; y4=y6=y2;
  564. x5=3u; x7=w-2.5u; y5=y7=.5stem-oo;
  565. pair v[]; v1=(z4-z5) xscaled 3.14159; v2=(z6-z7) xscaled 3.14159;
  566. pos5(stem,angle v1-90); pos7(stem,angle v2-90);
  567. filldraw circ_stroke z5e{v1}...{up}z4e;  % left stem
  568. filldraw circ_stroke z7e{v2}...{up}z6e;  % right stem
  569. math_fit(-.7x_height#*slant+.5hair#+.5u#,ic#-1/3x_height#*slant);
  570. enddef;
  571.  
  572. cmchar "Lowercase pi";
  573. beginchar("p",dims);
  574. this_letter; penlabels(1,2,3,4,5,6,7); endchar;
  575.  
  576. picture savedpicture;
  577.  
  578. % RO
  579.  
  580.  
  581. def width = 7u enddef;
  582. def height = x_height enddef;
  583. def depth = desc_depth enddef;
  584. def dims = width#,height#,depth# enddef;
  585. def ital = 0 enddef;
  586. def fit_params = 0,0 enddef;
  587.  
  588. def gen_letter =
  589. adjust_fit(0,0); pickup fine.nib; w:=w+1.25u;
  590. pos2(stem,180); pos3(vair,90); pos4(curve,0); pos5(vair,-90); pos6(stem,-180);
  591. lft x2r=hround(1.5u-.5stem); x2=x6; x3=x5=.5[x2,x4];
  592. rt x4r=hround(w-1.5u+.5curve);
  593. y2=y4=y6=.5[y3,y5]; top y3r=h+oo; bot y5r=-oo;
  594. filldraw circ_stroke pulled_arc.e(2,3) & pulled_arc.e(3,4)
  595.  & pulled_arc.e(4,5) & pulled_arc.e(5,6);  % bowl
  596. pos2'(hair,-180); z2'r=z2r; pos1(vstem,-90); pos1'(vstem,90); z1'=z1;
  597. pos0(hair,0); rt x0r=hround(w-u); bot y0=-d; bot y1r=vround-.9d; x1=x5;
  598. interim superness:=sqrt superness;
  599. filldraw stroke pulled_arc.e(0,1'); filldraw stroke pulled_arc.e(1,2'); % tail
  600. math_fit(desc_depth#*slant+.5stem#-u#,ic#);
  601.   numeric x_baryctr; x_baryctr=x3;
  602.   traba(-.5u);  % breathing placement
  603. enddef;
  604.  
  605. cmchar "Lowercase rho";
  606. beginchar("r",dims);
  607. this_letter; penlabels(1,2,3,4,5,6,7,8,9,10); endchar;
  608.  
  609. picture savedpicture;
  610.  
  611. % SIGMA TELIKO
  612.  
  613. def dims= 7u#,x_height#,.5min(desc_depth#,.5x_height#) enddef; 
  614. def ital = 0 enddef;
  615. def fit_params = 0,0 enddef;
  616.  
  617. def gen_letter =
  618. adjust_fit(0,0); pickup fine.nib; w:=w+u;
  619. numeric heavy_vair; heavy_vair=.25[vair,vstem];
  620. pos1(heavy_vair,-110); pos2(vair,-90);
  621. x1+.5heavy_vair=hround(w-u); y1=.1[y2r,bar_height];
  622. x2=min(.5w+u,x1r-eps); top y2l=h+oo;
  623. filldraw circ_stroke z1e{x2-x1,2(y2-y1)}...{left}z2e;  % upper bulb
  624. numeric theta; theta=90-angle(16u,x_height); slope:=-x_height/16u;
  625. pos6(stem,theta); pos7(vair,-90); pos8(vair,-135);
  626. lft x4l=hround u; x4r-x4l=(hround .5[vair,stem])-fine;
  627. x6=x7=w-2u; x8=.5w+u; y6=.25[y8,y2]; y8=y7+1/8d; bot y7r=-d-oo;
  628. ellipse_set(2l,4l,5l,6l); ellipse_set(2r,4r,5r,6r); y4=y4r;
  629. filldraw circ_stroke z8e{x7-x8,2(y7-y8)}...z7e{right}...z6e
  630.  ---z5e...{up}z4e...{right}z2e;  % main stroke
  631. math_fit(-.5x_height#*slant-.5u#,0);
  632. traba(-.5u);
  633. enddef;
  634.  
  635. cmchar "Final lowercase sigma";
  636. beginchar("c",dims);
  637. this_letter; penlabels(1,2,3,4,5,6,7,8); endchar;
  638.  
  639. numeric gen_sigma; gen_sigma=1;
  640.  
  641. % SIGMA ARQIKO
  642.  
  643. def dim_sigma =  8.75u#,x_height#,0 enddef; 
  644. def ital_sigma = 0 enddef;
  645. def fit_params_sigma = 0,.75u# enddef;
  646.  
  647. def mid_sigma=
  648. italcorr ital_sigma; adjust_fit(fit_params_sigma);
  649. if known pic.c: currentpicture:=pic.c; else: gen_mid_sigma; fi
  650. if not working_hard : picture pic.c; pic.c=currentpicture; fi
  651. enddef;
  652.  
  653. def gen_mid_sigma =
  654. adjust_fit(0,0); pickup fine.nib; w:=w+1.5u;
  655. pos1(vstem,90); pos2(stem,0); pos3(vair,-90);
  656. pos4(stem,-180); pos5(vstem,-270); pos6(vstem,-270);
  657. x1=x3=x5=.5[x2,x4]; rt x2r=hround(w-2.5u);
  658. lft x4r=hround(1.5u-.5curve);x6=w-1.5u;
  659. top y1r=h; y2=y4=.5[y1,y3]; bot y3r=-oo; y5=y6=y1;
  660. filldraw circ_stroke z6e..pulled_arc.e(5,4) & pulled_arc.e(4,3)
  661.  & pulled_arc.e(3,2) & pulled_arc.e(2,1);  % ear and bowl
  662. math_fit(-.3x_height#*slant+.5curve#-u#,ic#-1/3x_height#*slant);
  663. traba(-.5u);
  664. enddef;
  665.  
  666. cmchar "Initial and medial lowercase sigma";
  667. beginchar("s",dim_sigma);
  668. mid_sigma; penlabels(1,2,3,4,5,6); endchar;
  669.  
  670. picture savedpicture;
  671.  
  672. % TAU
  673.  
  674. def dims = 7.2u#,x_height#,0 enddef;
  675. def ital = 0 enddef;
  676. def fit_params = -.25,0 enddef;
  677.  
  678. def gen_letter=
  679. adjust_fit(0,0); w:=w+u; pi_stroke; % hook and bar
  680. pos4(stem,0);
  681. x4-.5stem=hround(.5w-.5u-.5stem); y4=y2; x5=x4-.25u; x7=x4+3u;
  682. hook_out(5,6,7)(skewed);
  683. filldraw circ_stroke z4e{down}...{-u,-x_height}z5e;  % stem
  684. math_fit(-.7x_height#*slant+.5hair#+.5u#,-.5u#);
  685. enddef;
  686.  
  687. cmchar "Lowercase tau";
  688. beginchar("t",dims);
  689. this_letter; penlabels(1,2,3,4,5,6,7); endchar;
  690.  
  691. picture savedpicture;
  692.  
  693. % UPSILON
  694.  
  695.  
  696. def width = 8.5u enddef;
  697. def dims = width#,x_height#,0 enddef;
  698. def ital = 0 enddef;
  699. def fit_params = 0,0 enddef;
  700.  
  701. def gen_letter=
  702. adjust_fit(0,0); pickup fine.nib;
  703. w:=w+.5u; interim superness:=more_super;
  704. x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem);
  705. hook_in(0,1,2)(skewed);  % opening hook
  706. pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0);
  707. x4=.5w+u; rt x5r=hround(w-.5u); y3=.7[y4,y5]; bot y4r=-oo; y5=.57h;
  708. filldraw stroke z2'e{-u,-x_height}...super_arc.e(3,4)
  709.  ..tension atleast 1.05..{up}z5e; % left stem and arc
  710. v_bulb(5,6);  % closing bulb
  711. math_fit(-2/3x_height#*slant+.5hair#+.5u#,2/3ic#);
  712.   numeric x_baryctr; x_baryctr=x4-u; 
  713. enddef;
  714.  
  715. cmchar "Lowercase upsilon";
  716. beginchar("u",dims);
  717. this_letter; penlabels(0,1,2,3,4,5,6,7); endchar;
  718.  
  719. cmchar "Lowercase upsilon with rough breathing";
  720. beginchar(oct"031",width#+.9u#,acc_ht#,0);
  721. this_letter; spirit(x_baryctr)<; endchar;
  722.  
  723. cmchar "Lowercase upsilon with smooth breathing";
  724. beginchar(oct"032",width#+.9u#,acc_ht#,0);
  725. this_letter; spirit(x_baryctr)>; endchar;
  726.  
  727. cmchar "Lowercase upsilon with acute";
  728. beginchar(oct"033",width#+.9u#,acc_ht#,0);
  729. this_letter; acute(x_baryctr); endchar;
  730.  
  731. cmchar "Lowercase upsilon with rough breathing and acute";
  732. beginchar(oct"034",width#+.9u#,acc_ht#,0);
  733. this_letter; spirit_acute(x_baryctr)<; endchar;
  734.  
  735. cmchar "Lowercase upsilon with smooth breathing and acute";
  736. beginchar(oct"166",width#+.9u#,acc_ht#,0);
  737. this_letter; spirit_acute(x_baryctr)>; endchar;
  738.  
  739. cmchar "Lowercase upsilon with circumflex";
  740. beginchar(oct"036",width#+.9u#,circ_ht#,0);
  741. this_letter; corr_circumflex(x_baryctr,.5u); endchar;
  742.  
  743. picture savedpicture;
  744.  
  745. % FI
  746.  
  747. def dims = 10.5u#,x_height#,desc_depth# enddef;
  748. def ital = 0 enddef;
  749. def fit_params = 0,0 enddef;
  750.  
  751. def gen_letter =
  752. adjust_fit(0,0); pickup fine.nib; w:=w+.5u;
  753. pos1(hair,-180); x1=x2+.75u; top y1=h;
  754. pos2(hair,-180); lft x2r=hround .5u; y2=bar_height;
  755. pos3(vstem,-90); x3=.5(w+u); bot y3r=-oo;
  756. pos4(hair,0); rt x4r=hround(w-.5u); y4=y2;
  757. pos5(vstem,90); x5=.52[x6,x4]; top y5r=h+oo;
  758. pos6(hair,180); x6=x7; y6=1/3h;
  759. pos7(stem,180); lft x7r=hround(.5w-.5u-.5stem); y7-.5stem=-d-o;
  760. filldraw circ_stroke z7e---z6e...{right}z5e...{down}z4e...{left}z3e
  761.  ...{up}z2e...{3(x1-x2),y1-y2}z1e;  % bowl and stem
  762. math_fit(-.3x_height#*slant,ic#); 
  763. enddef;
  764.  
  765. cmchar "Lowercase phi";
  766. beginchar("f",dims);
  767. this_letter; penlabels(1,2,3,4,5,6,7); endchar;
  768.  
  769. picture savedpicture;
  770.  
  771. % QI
  772.  
  773. def ital = 0 enddef;
  774. def fit_params = 0,0 enddef;
  775. def dims =  9u#,x_height#,desc_depth# enddef; 
  776.  
  777. def gen_letter=
  778. adjust_fit(0,0); pickup fine.nib; w:=w+u;
  779. pos1(hair,180); pos2(vair,80); pos5(vair,80); pos6(hair,180);
  780. x1-.5hair=hround-.5hair; x6=w-x1; x2=w-x5=u;
  781. y1=y2l-h/8; top y2r=h+oo; bot y5l=-d-oo; y6=y5r+h/8;
  782. z0=.5[z2,z5]; z2'=z2l+(.5u,0); z5'=z5r-(.5u,0);
  783. numeric theta; theta=angle(z5'-z2')+90;
  784. pos3(stem,theta); pos4(stem,theta);
  785. y3r=y2r-h/8; y4l=y5l+h/8; z3l=whatever[z2',z0]; z4r=whatever[z0,z5'];
  786. filldraw stroke z1e{up}...z2e{right}...z3e{z4r-z3l}
  787.  ..z4e{z4r-z3l}...{right}z5e...{up}z6e;  % major diagonal and hooks
  788. x8=w-x7=2u; y7+.5hair=h; y8-.5hair=-d;
  789. numeric theta; theta=angle(z7-z8)-90;
  790. pos7(hair,theta); pos8(hair,theta);
  791. filldraw z7l---z8l..z8r---z7r..cycle;  % minor diagonal
  792. math_fit((desc_depth#-x_height#)*slant+ic#,ic#);traba(.3u);
  793. enddef;
  794.  
  795. cmchar "Lowercase chi";
  796. beginchar("q",dims);
  797. this_letter; penlabels(0,1,2,2',3,4,5',5,6,7,8); endchar;
  798.  
  799. picture savedpicture;
  800.  
  801. % YI
  802.  
  803. def dims = 10.5u#,asc_height#,desc_depth# enddef;
  804. def ital = 0 enddef;
  805. def fit_params = 0,0 enddef;
  806.  
  807. def gen_letter =
  808. adjust_fit(0,0); pickup fine.nib; 
  809. w:=w+.5u; interim superness:=more_super;
  810. x0=0; x2=x3+.25u; pos3(stem,-180); lft x3r=hround(2.5u-.5stem);
  811. hook_in(0,1,2)(skewed);  % opening hook
  812. pos2'(stem,-180); z2'=z2; pos4(vair,-90); pos5(hair,0);
  813. x4=.5w+u; rt x5r=hround(w-.5u);
  814. y3=.7[y4,y5]; bot y4r=-oo; y5=.57x_height;
  815. filldraw stroke z2'e{-u,-x_height}...super_arc.e(3,4)
  816.  ..tension atleast 1.05..{up}z5e; % left stem and arc
  817. v_bulb(5,6);  % closing bulb
  818. pos7(.5[hair,stem],0); pos8(.5[hair,stem],0); x7=x8=.5w+.5u; 
  819. top y7=h; bot y8=-d-oo;
  820. filldraw stroke z7e--z8e;  % stem
  821. math_fit(-2/3x_height#*slant+.5hair#+.5u#,2/3ic#);
  822. enddef;
  823.  
  824. cmchar "Lowercase psi";
  825. beginchar("y",dims);
  826. this_letter; penlabels(0,1,2,3,4,5,6,7,8); endchar;
  827.  
  828. picture savedpicture;
  829.  
  830. % WMEGA
  831.  
  832.  
  833. def width =  8.3u enddef; 
  834. def height = x_height enddef;
  835. def dims = width#,height#,0 enddef;
  836. def ital = 0 enddef;
  837. def fit_params = 0,0 enddef;
  838.  
  839. def gen_letter =
  840. adjust_fit(0,0); pickup fine.nib; w:=w+1.2u;
  841. pos2(hair,-180); lft x2r=hround.5u; y2=y4=y6=y8=bar_height;
  842. y1+.5hair=h; x1=x2+.75u; pos1(hair,angle(2(x1-x2),y1-y2)+90);
  843. pos3(vstem+dw,-90); pos4(hair,0); pos5(vair,90);
  844. pos6(hair,180); pos7(vstem+dw,270); pos8(hair,360);
  845. bot y3r=bot y7r=-oo; top y5r=vround(.2[y4,h]+.5vair);
  846. x3=.5[x2,x4]; x7+.25u=.5[x6,x8]; rt x8r=hround(w-.5u);
  847. x5+.5stem=hround(.5w+.5stem)+eps;
  848. x5=.5[x4,x6]; rt x4r-lft x6r=min(stem,2hair)+2eps;
  849. if x4l<x6l: x4l:=x6l:=x5; fi
  850. filldraw circ_stroke z1e{2(x2-x1),y2-y1}...z2e{down}...z3e{right}
  851.  ...{up}z4e...{left}z5e;  % left arc
  852. filldraw stroke z5e{left}...z6e{down}...z7e{right}...{up}z8e;  % right arc
  853. v_bulb(8,9);  % closing bulb
  854. math_fit(-bar_height#*slant,2/3ic#); 
  855.   numeric x_baryctr; x_baryctr=.5[x4,x6];
  856.   numeric pos_stem; pos_stem=x_baryctr; traba(-.5u);
  857. enddef;
  858.  
  859. cmchar "Lowercase omega";
  860. beginchar("w",dims);
  861. this_letter; penlabels(1,2,3,4,5,6,7,8,9); endchar;
  862.  
  863. cmchar "Lowercase omega with rough breathing";
  864. beginchar(oct"015",width#+u#,acc_ht#,0);
  865. this_letter; spirit(x_baryctr)<; endchar;
  866.  
  867. cmchar "Lowercase omega with smooth breathing";
  868. beginchar(oct"016",width#+u#,acc_ht#,0);
  869. this_letter; spirit(x_baryctr)>; endchar;
  870.  
  871. cmchar "Lowercase omega with acute";
  872. beginchar(oct"017",width#+u#,acc_ht#,0);
  873. this_letter; acute(x_baryctr); endchar;
  874.  
  875. cmchar "Lowercase omega with rough breathing and acute";
  876. beginchar(oct"020",width#+u#,acc_ht#,0);
  877. this_letter; spirit_acute(x_baryctr)<; endchar;
  878.  
  879. cmchar "Lowercase omega with smooth breathing and acute";
  880. beginchar(oct"021",width#+u#,acc_ht#,0);
  881. this_letter; spirit_acute(x_baryctr)>; endchar;
  882.  
  883. cmchar "Lowercase omega with circumflex";
  884. beginchar(oct"022",width#+u#,circ_ht#,0);
  885. this_letter; circumflex(x_baryctr); endchar;
  886.  
  887. picture pic.iota;
  888. picture savedpicture;
  889.  
  890.